package com.cmyshare.design.bridgePattern;

/**
 * @version 1.0
 * @Author cmy
 * @Date 2024/2/26 17:43
 * @desc 定义Abstraction Person类
 */
public abstract class Person {
    /**
     * 定义抽象类的接口。 维护一个指向Implementor类型对象的指针。
     */
    /**
     * 服装 用于关联具体的服装实现类，这是桥接模式的关键，实现抽象与实现的连接。
     */
    private Clothing clothing;
    /**
     * 类型 用于表示 Person 的类型，如男人、女人等。
     */
    private String type;

    /**
     * 用于获取和设置 clothing 成员变量。
     * @return
     */
    public Clothing getClothing() {
        return clothing;
    }
    public void setClothing(Clothing clothing) {
        this.clothing = clothing;
    }

    /**
     * 用于获取和设置 type 成员变量。
     * @param type
     */
    public void setType(String type) {
        this.type = type;
    }
    public String getType() {
        return this.type;
    }

    /**
     * 穿衣服方法
     * 定义了一个抽象方法 dress()，子类必须实现该方法来完成具体的穿衣服逻辑。
     */
    public abstract void dress();
}
